package com.ch09.service;

import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

/**
 * @ClassName UserService
 * @Description TODO
 * @Author Kx
 * @Date 2025/4/29 13:02
 * @Version 1.0
 */
@Service
// 通过@Scope注解来设置作用域; singleton:单例模式; prototype:原型模式
// 当高层模块是单例,注入的底层模块是一个原型的时候,此时的原型并不会生效.
// proxyMode = ScopedProxyMode.TARGET_CLASS : 表示在注入到高层模式时,会先注入一个代理,再通过代理构建新的低层模块对象
// 表示如果高层模块是单例,低层模块是原型,每次注入到高层模块中时,会先注入一个代理,然后再通过代理调用spring容器创建一个新的低层模块对象
@Scope(value = "prototype",proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserService {
    public void add() {
        System.out.println("Add user");
    }
}
